home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / DoknSplitz205087312007.psc / ActiveX Control Source / clsControls.cls < prev   
Text File  |  2007-02-28  |  34KB  |  598 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3. MultiUse = -1                                     'True
  4. Persistable = 0                                   'NotPersistable
  5. DataBindingBehavior = 0                           'vbNone
  6. DataSourceBehavior  = 0                           'vbNone
  7. MTSTransactionMode  = 0                           'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "clsControls"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = False
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = True
  14. Attribute VB_Description = "A class module to implement custom collection of class clsControl"
  15. Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
  16. Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
  17. '*******************************************************************************
  18. '** File Name     - clsControls.cls                                           **
  19. '** Description   - A class module to implement custom collection of class    **
  20. '**                 clsControl                                                **
  21. '** Usage         - Instead of using a real control (like TextBox control)    **
  22. '**                 properties directly, VB Control Manager control saves the **
  23. '**                 necessary properties plus several custom properties in a  **
  24. '**                 virtual control. Furthermore, VB Control Manager control  **
  25. '**                 works with this virtual control (next, will be called     **
  26. '**                 control) to manipulate its position and size and then     **
  27. '**                 write it back to the related real control.                **
  28. '** Dependencies  - clsControl, mdlGeneral                                    **
  29. '** Public Members-                                                           **
  30. '**   * Collections- -                                                        **
  31. '**   * Object     - Item (def. r/o)                                          **
  32. '**   * Property   - Count (r/o)                                              **
  33. '**   * Method     - IsExist                                                  **
  34. '**   * Events     - TitleBarCloseVisibleChanged, TitleBarVisibleChange       **
  35. '** Friend Members-                                                           **
  36. '**   * Collections- -                                                        **
  37. '**   * Object     - Item (def. r/o)                                          **
  38. '**   * Properties - Bottom (r/w), Count (r/o),                               **
  39. '**                  DefaultTitleBar_CloseVisible (r/o),                      **
  40. '**                  DefaultTitleBar_Height (r/o),                            **
  41. '**                  DefaultTitleBar_Visible (r/o),                           **
  42. '**                  Height (r/w), Left (r/w), Right (r/w),                   **
  43. '**                  TitleBar_CloseVisible (r/o), TitleBar_Height (r/w),      **
  44. '**                  TitleBar_Visible (r/w), Top (r/w), Width (r/w)           **
  45. '**   * Methods    - Add, Backup, Compact, IsExist, IsValid, Remove,          **
  46. '**                  RemoveHeaps, RemoveHoles, Restore, Stretch               **
  47. '** Notes         - * Height properties value are generated from Bottom and   **
  48. '**                   Top properties value                                    **
  49. '**                 * Width properties value are generated from Left and      **
  50. '**                   Right properties value                                  **
  51. '** Last modified on September 3, 2003                                        **
  52. '*******************************************************************************
  53. Option Explicit
  54. Private Const mconModuleName           As String = "clsControls"
  55. '--- Public Type Declaration
  56. Public Enum genmRemoveHeapDirection
  57.    rhdAllDirection
  58.    rhdHorizontal
  59.    rhdVertical
  60. End Enum
  61. '--- Custom Collection Class Variable
  62. Private mcolControls                   As Collection
  63. '--- Properties Variables
  64. ' Developer's Controls Frame Area Position and Size
  65. ' Note- These properties below defined the developer's frame of controls
  66. '       collection. It is named developer's frame because the frame area is
  67. '       determined by the developer. After calling Stretch method, the current
  68. '       frame will have the same size of area with the developer's frame's
  69. Private mlngLeft                       As Long
  70. Private mlngTop                        As Long
  71. Private mlngRight                      As Long
  72. Private mlngBottom                     As Long
  73. ' Current Controls Frame Area Position and Size
  74. ' Note- These properties below defined the current frame of controls collection.
  75. '       Current frame is the minimum frame area needed to cover all control in
  76. '       controls collection. The frame area is automatically adjusted every time
  77. '       a new control is added in controls collection.
  78. Private mlngCurLeft                    As Long
  79. Private mlngCurTop                     As Long
  80. Private mlngCurRight                   As Long
  81. Private mlngCurBottom                  As Long
  82. ' Title Bar
  83. Private mblnTitleBar_CloseVisible      As Boolean
  84. Private mlngTitleBar_Height            As Long
  85. Private mblnTitleBar_Visible           As Boolean
  86. Private mlngTitleBar_TBarType          As TBarTypes
  87. Private mlngTitleBar_Position          As TBarOrientation
  88. '--- Property Default Values
  89. Private Const mconDefaultTitleBar_CloseVisible As Boolean = True
  90. Private Const mconDefaultTitleBar_Height As Long = 15
  91. Private Const mconDefaultTitleBar_Visible As Boolean = True
  92. Private Const mconDefaultTitleBar_TBarType As Long = TBT_DEFAULT
  93. Private Const mconDefaultTitleBar_Position As Long = TBO_HORIZONTAL
  94. '--- Other Variables
  95. Private mblnEventDisable               As Boolean 'indicating whether the class
  96. 'event shouldn't be triggered
  97. Private murecControlBackup()           As RECT    'backup of the Controls collection's
  98. '                  size and position
  99. 'Description- Occurs when the TitleBar_CloseVisible property of the class is
  100. '             changed
  101. 'Arguments  - IdControl (a value that uniquely identifies a control)
  102. Public Event TitleBarCloseVisibleChange(sIdControl As String)
  103. 'Description- Occurs when the TitleBar_Visible property of the class is changed
  104. 'Arguments  - IdControl (a value that uniquely identifies a control)
  105. Public Event TitleBarVisibleChange(sIdControl As String)
  106. 'Description- Occurs when the TitleBar_Type property of the class is changed
  107. 'Arguments  - IdControl (a value that uniquely identifies a control)
  108. Public Event TitleBarTypeChange(sIdControl As String)
  109. '*****************************************************
  110. Friend Function Add(cctl As Control, Optional octlNew As clsControl) As Boolean
  111. '*****************************************************
  112.    ' Purpose    - Adds a new item to the collection
  113.    ' Assumption - Controls with index IdCtl exists in cctl collection
  114.    ' Effect     - * If control cctl doesn't have Left, Top, Width or Height
  115.    '                property in run-time mode, then this method doesn't have any
  116.    '                effect, i.e. no item will be added to the collection
  117.    '              * Otherwise, the new item (which is a virtual control of
  118.    '                control cctl has been added to the collection and its
  119.    '                position, size and minimum height/width properties have been
  120.    '                initialized
  121.    ' Inputs     - * cctl (controls collection contained in DoknSplitz
  122.    '                      control)
  123.    '              * IdCtl (Index of cctl that will be added to the collection)
  124.    ' Note       - To get the minimum height and width of control cctl, I set
  125.    '              its height and width to 0 (if the minimum height/width of the
  126.    '              control is larger than 0, control cctl will automatically
  127.    '              adjust its height/value to its minimum value), save control
  128.    '              cctl's height and width in the control's MinWidth and
  129.    '              MinHeight property and then restore control cctl's height
  130.    '              and width. Note that if control cctl is visible when you
  131.    '              add it to the collection, it may produce a flickering effect.
  132.    Dim bctlIsVisible       As Boolean            'save the current state of the control
  133.    Dim lngHeightSave       As Long               'to restore control cctl height
  134.    Dim lngWidthSave        As Long               'to restore control cctl width
  135.    Dim sCtlName            As String
  136. 10   On Error GoTo Add_Err
  137. 20   mblnEventDisable = True
  138. 30   Set octlNew = New clsControl
  139. 40   If Not IsArray(cctl) Then
  140. 50      sCtlName = cctl.Name
  141. 60   Else
  142. 70      sCtlName = cctl.Name & CStr(cctl.Index)   'append the index so name is unique
  143. 80      End If
  144. 90   With octlNew
  145. 100      Set .Parent = Me
  146. 110      .refCtlObj = cctl                        ' reference the control
  147. 120      .Key = sCtlName                          'save the Control Name as the key
  148. 130      On Error GoTo Add_Err
  149. 140      .TitleBar_CloseVisible = mblnTitleBar_CloseVisible
  150. 150      .TitleBar_Height = mlngTitleBar_Height
  151. 160      .TitleBar_Visible = mblnTitleBar_Visible
  152. 170      .TitleBar_TBarType = mlngTitleBar_TBarType
  153. 180      .TitleBar_Position = mlngTitleBar_Position
  154. 190      End With
  155. 200   mblnEventDisable = False
  156.       ' Sets the item's position and size
  157.       '-- Adds to the collection
  158. 210   mcolControls.Add octlNew, octlNew.Key
  159. 220   SetFrameDimensions octlNew
  160. 230   Add = True
  161. 240   Add_Exit:
  162. 250   On Error GoTo 0
  163. 260   Exit Function
  164. 270   Add_Err:
  165. 280   ErrHandler Err, Error$, "Line:" & VBA.Erl & ", Add", mconModuleName
  166. 290   Set octlNew = Nothing
  167. 300   Resume Add_Exit
  168. End Function
  169. '*****************************************************
  170. Friend Sub Backup()
  171. '*****************************************************
  172.    ' Purpose    - Backup all members size and position
  173.    Dim lIdx                As Long
  174.    Dim lTot                As Long
  175.    Dim octl                As clsControl         'for enumerating all virtual controls in Controls collection
  176. 10   lTot = mcolControls.Count
  177. 20   If lTot > 0 Then
  178. 30      ReDim murecControlBackup(1 To lTot)
  179. 40      For lIdx = 1 To lTot
  180. 50         Set octl = mcolControls(lIdx)
  181. 60         If Not octl.Closed Then
  182. 70            With murecControlBackup(lIdx)
  183. 80               .Top = octl.Top
  184. 90               .Right = octl.Right
  185. 100               .Bottom = octl.Bottom
  186. 110               .Left = octl.Left
  187. 120               End With
  188. 130            End If
  189. 140         Next
  190. 150      End If
  191. End Sub
  192. '*****************************************************
  193. Friend Property Get Bottom() As Long
  194. Attribute Bottom.VB_Description = "Returns the distance between the bottom edge of the developer's controls frame area and the top edge of Splitter control"
  195. '*****************************************************
  196.    ' Purpose    - Returns the distance between the bottom edge of the developer's
  197.    '              controls frame area and the top edge of DoknSplitz
  198.    '              control
  199. 10   Bottom = mlngBottom
  200. End Property
  201. '*****************************************************
  202. Friend Property Let Bottom(ByVal lngBottom As Long)
  203. '*****************************************************
  204.    ' Purpose    - Sets the distance between the bottom edge of the developer's
  205.    '              controls frame area and the top edge of DoknSplitz
  206.    '              control
  207.    ' Input      - lngBottom (the new Bottom propety value)
  208. 10   mlngBottom = lngBottom
  209. End Property
  210. '*****************************************************
  211. Private Sub Class_Initialize()
  212. '*****************************************************
  213. 10   Set mcolControls = New Collection
  214. 20   InitFrameVars
  215. 30   mblnTitleBar_CloseVisible = mconDefaultTitleBar_CloseVisible
  216. 40   mlngTitleBar_Height = mconDefaultTitleBar_Height * Screen.TwipsPerPixelY
  217. 50   mblnTitleBar_Visible = mconDefaultTitleBar_Visible
  218. 60   mblnEventDisable = False
  219. End Sub
  220. '*****************************************************
  221. Private Sub Class_Terminate()
  222. '*****************************************************
  223. 10   Set mcolControls = Nothing
  224. End Sub
  225. '*****************************************************
  226. Friend Sub Compact()
  227. Attribute Compact.VB_Description = "Compacts each item in the collection so there won't be any space left"
  228. '*****************************************************
  229.    ' Purpose    - Compacts each item in the collection so there won't be any space left
  230.    ' Note       - Even after calling this method, it may still left special spaces
  231.     '              called "holes" that will be removed with RemoveHoles method. See
  232.     '              VB Control Manager control's documentation or help for the
  233.     '              definition of "hole".
  234.    Dim lngXYMeet           As Long               'the x- or y-coordinate where the edges of two
  235.    Dim octl                As clsControl         'for enumerating all items in the collection
  236. 10   On Error GoTo Compact_Err
  237.      '-----------------------------------------
  238.      '-- Clear all friend assignments for each control
  239.      '-----------------------------------------
  240. 20   For Each octl In mcolControls
  241. 30      octl.IdCtlFriendTop = vbNullString
  242. 40      octl.IdCtlFriendRight = vbNullString
  243. 50      octl.IdCtlFriendBottom = vbNullString
  244. 60      octl.IdCtlFriendLeft = vbNullString
  245. 70      Next
  246. 80   For Each octl In mcolControls
  247. 90      If Not octl.Closed Then
  248. 100         With octl
  249.                '-- Compact control octl's top
  250.                ' Sets top-side friend control
  251. 110            SetFriend .Key
  252. 120            If LenB(.IdCtlFriendTop) = 0 Then
  253.                   ' Control octl doesn't have top-side friend, so set the control's top
  254.                   '   to current frame area's top
  255. 130               .Top = mlngCurTop
  256. 140            Else
  257.                   ' Determines lngXYMeet value- where control octl and its top-side
  258.                   '   friend will be compacted to
  259. 150               SetFriend .IdCtlFriendTop
  260. 160               lngXYMeet = (.Top + Item(.IdCtlFriendTop).Bottom) \ 2
  261. 170               If Item(.IdCtlFriendTop).IdCtlFriendBottom <> .Key Then
  262. 180                  lngXYMeet = IIf(lngXYMeet < Item(Item(.IdCtlFriendTop).IdCtlFriendBottom).Top, lngXYMeet, Item(Item(.IdCtlFriendTop).IdCtlFriendBottom).Top)
  263. 190                  End If
  264.                   ' Compacts control octl's top and its top-side friend's bottom
  265. 200               .Top = lngXYMeet
  266. 210               Item(.IdCtlFriendTop).Bottom = lngXYMeet
  267. 220               End If
  268.                '-- Compact control octl's right
  269.                ' Set right-side friend control (must do SetFriend again to compensate
  270.                '   the right-side friend change possibility because of previous
  271.                '   compact)
  272. 230            SetFriend .Key
  273. 240            If LenB(.IdCtlFriendRight) = 0 Then
  274.                   ' Control octl doesn't have eight-side friend, so set the control's
  275.                   '   right to current frame area's right
  276. 250               .Right = mlngCurRight
  277. 260            Else
  278.                   ' Determine lngXYMeet value- where control octl and its right-side
  279.                   '   friend will be compacted to
  280. 270               SetFriend .IdCtlFriendRight
  281. 280               lngXYMeet = (.Right + Item(.IdCtlFriendRight).Left) \ 2
  282. 290               If Item(.IdCtlFriendRight).IdCtlFriendLeft <> .Key Then lngXYMeet = IIf(lngXYMeet > Item(Item(.IdCtlFriendRight).IdCtlFriendLeft).Right, lngXYMeet, Item(Item(.IdCtlFriendRight).IdCtlFriendLeft).Right)
  283.                   ' Compacts control octl's right and its right-side friend's left
  284. 300               .Right = lngXYMeet
  285. 310               Item(.IdCtlFriendRight).Left = lngXYMeet
  286. 320               End If
  287.                '-- Compact control octl's bottom
  288.                ' Sets bottom-side friend control (must do SetFriend again to compensate
  289.                '   the bottom-side friend change possibility because of previous
  290.                '   compact)
  291. 330            SetFriend .Key
  292. 340            If LenB(.IdCtlFriendBottom) = 0 Then
  293.                   ' Control octl doesn't have bottom-side friend, so set the control's
  294.                   '   bottom to current frame area's bottom
  295. 350               .Bottom = mlngCurBottom
  296. 360            Else
  297.                   ' Determines lngXYMeet value- where control octl and its bottom-side
  298.                   '   friend will be compacted to
  299. 370               SetFriend .IdCtlFriendBottom
  300. 380               lngXYMeet = (.Bottom + Item(.IdCtlFriendBottom).Top) \ 2
  301. 390               If Item(.IdCtlFriendBottom).IdCtlFriendTop <> .Key Then lngXYMeet = IIf(lngXYMeet > Item(Item(.IdCtlFriendBottom).IdCtlFriendTop).Bottom, lngXYMeet, Item(Item(.IdCtlFriendBottom).IdCtlFriendTop).Bottom)
  302.                   ' Compacts control octl's bottom and its bottom-side friend's top
  303. 400               .Bottom = lngXYMeet
  304. 410               Item(.IdCtlFriendBottom).Top = lngXYMeet
  305. 420               End If
  306.                '-- Compact control octl's left
  307.                ' Sets left-side friend control (must do SetFriend again to compensate
  308.                '   the left-side friend change possibility because of previous compact)
  309. 430            SetFriend .Key
  310. 440            If LenB(.IdCtlFriendLeft) = 0 Then
  311.                   ' Control octl doesn't have left-side friend, so set the control's
  312.                   '   left to current frame area's left
  313. 450               .Left = mlngCurLeft
  314. 460            Else
  315.                   ' Determines lngXYMeet value- where control octl and its left-side
  316.                   '   friend will be compacted to
  317. 470               SetFriend .IdCtlFriendLeft
  318. 480               lngXYMeet = (.Left + Item(.IdCtlFriendLeft).Right) \ 2
  319. 490               If Item(.IdCtlFriendLeft).IdCtlFriendRight <> .Key Then lngXYMeet = IIf(lngXYMeet < Item(Item(.IdCtlFriendLeft).IdCtlFriendRight).Left, lngXYMeet, Item(Item(.IdCtlFriendLeft).IdCtlFriendRight).Left)
  320.                   ' Compacts control octl's left and its left-side friend's right
  321. 500               .Left = lngXYMeet
  322. 510               Item(.IdCtlFriendLeft).Right = lngXYMeet
  323. 520               End If
  324. 530            End With
  325. 540         End If
  326. 550      Next
  327. 560   Compact_Exit:
  328. 570   On Error GoTo 0
  329. 580   Exit Sub
  330. 590   Compact_Err:
  331. #If DebugMode Then
  332. 600   ErrHandler Err, Error$, "Line:" & VBA.Erl & ", Compact", mconModuleName
  333. #End If
  334. 610   Resume Compact_Exit
  335. End Sub
  336. '*****************************************************
  337. Public Property Get Count() As Long
  338. Attribute Count.VB_Description = "Returns the number of items in the collection"
  339. '*****************************************************
  340.    ' Purpose    - Returns the number of items in the collection
  341. 10   Count = mcolControls.Count
  342. End Property
  343. '*****************************************************
  344. Friend Property Get DefaultTitleBar_CloseVisible() As Boolean
  345. '*****************************************************
  346.    ' Purpose    - Returns the default TitleBar_CloseVisible property
  347. 10   DefaultTitleBar_CloseVisible = mconDefaultTitleBar_CloseVisible
  348. End Property
  349. '*****************************************************
  350. Friend Property Get DefaultTitleBar_Height() As Long
  351. '*****************************************************
  352.    ' Purpose    - Returns the default TitleBar_Height property
  353. 10   DefaultTitleBar_Height = mconDefaultTitleBar_Height * Screen.TwipsPerPixelY
  354. End Property
  355. '*****************************************************
  356. Friend Property Get DefaultTitleBar_Position() As TBarOrientation
  357. '*****************************************************
  358.    ' Purpose    - Returns the default TitleBar_Position property
  359. 10   DefaultTitleBar_Position = mconDefaultTitleBar_Position
  360. End Property
  361. '*****************************************************
  362. Friend Property Get DefaultTitleBar_TBarType() As TBarTypes
  363. '*****************************************************
  364.    ' Purpose    - Returns the default TitleBar_TBarType property
  365. 10   DefaultTitleBar_TBarType = mconDefaultTitleBar_TBarType
  366. End Property
  367. '*****************************************************
  368. Friend Property Get DefaultTitleBar_Visible() As Boolean
  369. '*****************************************************
  370.    ' Purpose    - Returns the default TitleBar_Visible property
  371. 10   DefaultTitleBar_Visible = mconDefaultTitleBar_Visible
  372. End Property
  373. '*****************************************************
  374. Public Sub DumpCtls()
  375. '*****************************************************
  376.    Dim lIdx                As Long
  377.    Dim lTot                As Long
  378.    Dim octl                As clsControl         'for enumerating all virtual controls in Controls collection
  379. #If DebugMode Then
  380. 10   lTot = mcolControls.Count
  381. 20   For lIdx = 1 To lTot
  382. 30      Set octl = mcolControls(lIdx)
  383. 40      AppTrace mconModuleName, "DumpCtls", "mcolControls ..vctl(" & lIdx & ") name:" & octl.Key
  384. 50      Next
  385. #End If
  386. End Sub
  387. '*****************************************************
  388. Friend Property Let Height(ByVal lngHeight As Long)
  389. '*****************************************************
  390.    ' Purpose    - Sets the height of the developer's controls frame area
  391.    ' Input      - lngHeight(the new Height property value)
  392. 10   mlngBottom = mlngTop + lngHeight
  393. 20   mlngCurBottom = mlngBottom
  394. End Property
  395. '*****************************************************
  396. Friend Property Get Height() As Long
  397. Attribute Height.VB_Description = "Returns the height of the developer's controls frame area"
  398. '*****************************************************
  399.    ' Purpose    - Returns the height of the developer's controls frame area
  400. 10   Height = mlngBottom - mlngTop
  401. End Property
  402. '*****************************************************
  403. Private Sub InitFrameVars()
  404. '*****************************************************
  405.    ' Initialize the left and top to the maximum value and the right and bottom to
  406.    '   the minimum value to make sure that these values will be replaced with
  407.    '   minimum left and top value and maximum right and bottom value
  408. 10   mlngCurLeft = gconLngInfinite
  409. 20   mlngCurTop = gconLngInfinite
  410. 30   mlngCurRight = 0
  411. 40   mlngCurBottom = 0
  412. End Sub
  413. '*****************************************************
  414. Private Function IsEmptyHole(ByVal octlHole As clsControl) As Boolean
  415. Attribute IsEmptyHole.VB_Description = "Returns the value indicating whether the hole octlHole is empty"
  416. '*****************************************************
  417.    ' Purpose    - Returns the value indicating whether the hole octlHole is empty
  418.    ' Assumption - Hole octlHole's friend controls have been initialized
  419.    ' Note       - See VB Control Manager documentation for the explanation of the
  420.    '              hole which is not empty
  421.    Dim blnIsEmptyHole      As Boolean            'returned value
  422.    Dim octl                As clsControl         'for enumerating all items in the collection
  423. 10   If (LenB(octlHole.IdCtlFriendTop) = 0) Or (LenB(octlHole.IdCtlFriendRight) = 0) Or (LenB(octlHole.IdCtlFriendBottom) = 0) Or (LenB(octlHole.IdCtlFriendLeft) = 0) Then
  424. 20      blnIsEmptyHole = False
  425. 30   Else
  426. 40      blnIsEmptyHole = True
  427. 50      For Each octl In mcolControls
  428. 60         If Not octl.Closed Then
  429. 70            With octl
  430. 80               If (.Top >= Item(octlHole.IdCtlFriendTop).Bottom) And (.Right <= Item(octlHole.IdCtlFriendRight).Left) And (.Bottom <= Item(octlHole.IdCtlFriendBottom).Top) And (.Left >= Item(octlHole.IdCtlFriendLeft).Right) Then
  431. 90                  blnIsEmptyHole = False
  432. 100                  Exit For
  433. 110                  End If
  434. 120               End With
  435. 130            End If
  436. 140         Next
  437. 150      End If
  438. 160   IsEmptyHole = blnIsEmptyHole
  439. End Function
  440. '*****************************************************
  441. Public Function IsExist(sId As String) As Boolean
  442. Attribute IsExist.VB_Description = "Returns a value indicating whether certain index that uniquely identifies a virtual control exist in the collection"
  443. '*****************************************************
  444.    ' Purpose    - Returns value indicating whether an id is exist in the collection
  445.    ' Input      - Id
  446. 10   On Error Resume Next
  447. 20   IsExist = IsObject(mcolControls(sId))
  448. 30   On Error GoTo 0
  449. End Function
  450. '*****************************************************
  451. Friend Function IsValid() As Boolean
  452. Attribute IsValid.VB_Description = "Returns value indicating whether each item's width and height in the collection are not smaller than their minimum value"
  453. '*****************************************************
  454.    ' Purpose    - Returns value indicating whether each item's width and height in
  455.    '              the collection are not smaller than their minimum value
  456.    Dim blnIsValid          As Boolean            'returned value
  457.    Dim octl                As clsControl         'for enumerating all items in the collection
  458. 10   blnIsValid = True
  459.      ''''      If Not mblnEventDisable Then  'allow changing property values thru the gate
  460. 20   For Each octl In mcolControls
  461. 30      If Not octl.Closed Then
  462. 40         If (octl.Width < octl.MinWidth) Or (octl.Height < octl.MinHeight) Then
  463. 50            blnIsValid = False
  464. 60            Exit For
  465. 70            End If
  466. 80         End If
  467. 90      Next
  468.      ''''End If
  469. 100   IsValid = blnIsValid
  470. End Function
  471. '*****************************************************
  472. Public Property Get Item(ByRef sCtlName As String) As clsControl
  473. Attribute Item.VB_UserMemId = 0
  474. '*****************************************************
  475.    ' Purpose    - Returns an item in the collection which has key IdCtl
  476.    ' Assumption - Key IdCtl exists in the collection
  477.    ' Input      - IdCtl
  478. 10   Set Item = mcolControls.Item(sCtlName)
  479. End Property
  480. '*****************************************************
  481. Public Property Get ItemNo(ByRef lCtlNo As Long) As clsControl
  482. '*****************************************************
  483.    ' Purpose    - Returns an item in the collection which has key IdCtl
  484.    ' Assumption - Key IdCtl exists in the collection
  485.    ' Input      - IdCtl
  486. 10   Set ItemNo = mcolControls.Item(lCtlNo)
  487. End Property
  488. '*****************************************************
  489. Friend Property Get Left() As Long
  490. Attribute Left.VB_Description = "Returns the distance between the left edge of the developer's controls frame area and the left edge of Splitter control"
  491. '*****************************************************
  492.    ' Purpose    - Returns the distance between the left edge of the developer's
  493.    '              controls frame area and the left edge of DoknSplitz
  494.    '              control
  495. 10   Left = mlngLeft
  496. End Property
  497. '*****************************************************
  498. Friend Property Let Left(lngLeft As Long)
  499. '*****************************************************
  500.    ' Purpose    - Sets the distance between the left edge of the developer's
  501.    '              controls frame area and the left edge of DoknSplitz
  502.    '              control
  503.    ' Input      - lngLeft (the new Left property value)
  504. 10   mlngLeft = lngLeft
  505. End Property
  506. '*****************************************************
  507. Public Property Get NewEnum() As IUnknown
  508. Attribute NewEnum.VB_MemberFlags = "40"
  509. Attribute NewEnum.VB_UserMemId = -4
  510. '*****************************************************
  511.    ' Purpose    - Enables For Each ... Next enumeration
  512. 10   Set NewEnum = mcolControls.[_NewEnum]
  513. End Property
  514. '*****************************************************
  515. Public Sub ReCalcAllDimensions() '4Matz:New
  516. '*****************************************************
  517.    Dim octl                As clsControl
  518. 10   InitFrameVars
  519. 20   For Each octl In mcolControls
  520. 30      SetFrameDimensions octl
  521. 40      Next
  522. End Sub
  523. '*****************************************************
  524. Friend Sub Remove(sCtlName As String)
  525. Attribute Remove.VB_Description = "Removes an item which has key IdCtl from the collection"
  526. '*****************************************************
  527.    ' Purpose    - Removes an item which has key IdCtl from the collection
  528.    ' Assumption - Key IdCtl exists in the collection
  529.    ' Input      - IdCtl
  530. 10   mcolControls.Remove sCtlName
  531. End Sub
  532. '*****************************************************
  533. Friend Sub RemoveHeap(sCtlName As String, Optional ByVal blnMaintainSize As Boolean = False, Optional ByVal udeRemoveDirection As genmRemoveHeapDirection = rhdAllDirection)
  534. '*****************************************************
  535.    ' Purpose    - Removes item IdCtl's heap
  536.    ' Assumption - Item IdCtl exits in the collection
  537.    ' Input      - * IdCtl
  538.    '              * blnMaintainSize (indicating whether the position and size of item IdCtl can be change)
  539.    '              * udeRemoveDirection (indicating the direction in which way the heaps should be removed)
  540.    Dim blnSuccess          As Boolean
  541.    Dim intNError           As Integer
  542.    Dim lngResizeBottom     As Long               'the area lost for resizing the bottom of item IdCtl
  543.    Dim lngResizeLeft       As Long               'the area lost for resizing the ntrol f=ae to make sure thaFrien"Val bplitz
  544.    '              coicating whether an i   ion and size of item.m valuei   ion and size of item.m valuei   ion and size of item.m valuei   ion and size of item.m value**********************positi
  545. '****izeBo_ the direction in which wa  the dn
  546.    ' 0    size of item. whio'Kor 0    sizZtion inizZtiot ItemNo(- = "Returns the va    SetFrieft)Position.********see of item.m value
  547. 24value- wO value
  548. 24value- wO ie gate
  549. 20   For Eac the coEnd Proper    intainSize As Bn       0    sidddddddd.Sy    0    sidddddddd.Sy    0    sidddddddd.Sy    0     itemuei  Visibl   For_ the dir****************rtem Ihd************** directlyddd0) Or (LenB(luei   icontrolBpte(luevm value**********************positi
  550. '****izeBo_ the direction i3r******* dirlE*s Bn      size of  which is not empty
  551.    Dim blnIsEmptyHole      As Boolean            'returned value
  552.   ErrHandler Err, Error$, "Line:" & VBA.Erl & ", Compact", mconModuleNarrHandler E.Erl & ", Compact", mconBn= "Returns a value indmcoluPosicatinluPosicatinluPosicatinluPong   lEluPong   lEluPong   lElt      aluei   ionue ind vition
  553. 210   mcolControls.Add octlNew, octlNeeeeeeeeeeeeeeeeeeeeeeeswhich is not empty
  554.    Dim blnIsEmptyHole      As Booleaalse
  555. 100                  Exit se values will be replaced with0iellelngBottom = mlngTop*****     'the area loseeeeeee6i7'   f GnModuleNangBottoc****nx4et octlNew = Nothing
  556. 300   = Nothingcoicating wh  = Nothingcoicating wh  = N = Nothingcoicating wh  = NeNothingr=nModulndmcoluPosicrol       h) Ordddddd.Syd octln
  557.    ' A   As Boolean 2thing has key I the
  558. 30   On    h) Ordddddd.Syd octln
  559.    ' A   As Boolean 2thing has key I the
  560. 30   On    h) Ordddddd.Syd octln
  561.    ' A   g<idtI the
  562. 3Get tween the) OrdBln be change)
  563.    '         E.Eion - Key IdCtl erols in Controls collection
  564. 10   lTot = mcolControls.Count
  565. 20   If   has key I the
  566. 30   On   y    0     itemuei  Visibl   Foa3iNothingcoicating w4Returnmseeeeeee6i7'   f GnModuleNangBottoc****nx4et octlNew = Nothing
  567. 300   = Nothingcoicating wh  = Nothingcoicating wh  = ndicatn****m SetFriend .IdCtlFriendBottom
  568. 380               lngXYMeet = (.Bottom + Item(.IdCtlFriendBottom).Top) \ 2
  569. 390          0               lngXYMeet = (.Bottom + Item(.IdCtlFriendBottom).Top) \ 2
  570. 390          0               lngXYMeet = (.Botto'y the heaps should be removed)
  571.    Dim blnSuccess          As Boolean
  572.    Dim intNError           As Integer
  573.    Dim lngResizeBottom     As Long               'the area lost for resizing the bottom of item IdCtl
  574.    Dim lngResizeLeft       As Long           r r = oouns Long           r r = oouns Long           r r = oouns Long           r r = oouns Long           r r = oouns Long           r r = oouns Long           r r = oouns Long           r r = oouns Long           r r = oouns La     ***ngResizeLeft tAttrit        r r = ooun= oouns L_(g,t oouns Long           r r = oouns Long           r r = oouns Long           r r = oouns Long    rea lost for resizi=lue-i     r r =s L_(g,t oouns Long           y value)
  575. 10   mln<ea lost rw Long           y value)
  576. 10   mln<ea lost rw Long           y value)
  577. 10   mln<ea lost rw Long        aug wlos     dCtlFrien       y value)
  578. 10   ml     r r = oouns Long    Gng   Miom)e change)
  579.   m= oon  these values will be replg        smptihesak0  th(7ei collection whriend a rw Lfr(7ei collection whendBottom).Top) \   5y value)ll be rep  ml     r exi_'   )llectioGng
  580. 30nd a rw Lfr(lFrici collection whendBottom).Top) \   5y Ftom).6idth and height ik       Deop) \  mln<eion whendBottom).Top) \   5y FtTop) \           y vContrue)
  581. 10Top) \   5y FtTop) \           y op) \   5y FtTop) hendBottom).T the minimum height and width of-i     r r =s L_(g,t oouns Long          rumentation for the explanation of the
  582.    '              hole which is not empty
  583.    Di ik.nem(octlHo******* colleEhich is not empty
  584.    Di ik.nem(octlHo******* coll     eplg       Bcccccwa(lea3B****em(fMlle these Bl(Turumentation for the explanangBo.eaps should be removed)
  585.    Dim blnSuccess          As Boolean
  586.    Dim inttttt******* is notrn
  587. 10   If<   r r = oounion for the ex      1  r r m)eh of-i   for the explanaand     sm mcolConttttttttttttttttttttttttttttf th Nxeon  these vaT   h) Orub
  588. tlHoa        control
  589.    ' I   ik       Deop) \  mln<eion whendBottom).Top Item ' Input    f-i     rL,et
  590.    Di ik.nem(octlHo******* coll     eplg       Bcccccwa(lea3B****em(fMControoooooooon      Bcc-tlHhingcoicating wh  = Nothingcoicating wh  = N = Nothingcoicating wh  = NeNothingr=nMofau     *****nse    - Rbolu
  591.      =s La      r                  C ectdCu          et
  592.   
  593.    Dim inttttt******* is notrn
  594. 10   If<    d  ml7ut    nd ar     =op) \ lue)
  595. 10.****** theluerty
  596. 10           et
  597. luert Di ik.nem(octlHo******* coll     eplg      ,=ropo=tlHo**s Integer
  598.    Dim lngResizeBottowsingcoi(ttoc****nx4et octlN /Eeet = (.Bottom + Item(